package com.quanyan.stadium.biz;

import com.quanyan.stadium.entity.TbPKEvent;
import com.quanyan.stadium.entity.TbUserPKResult;
import com.quanyan.stadium.entity.vo.PKEvent;
import com.quanyan.stadium.entity.vo.PKEventVo;
import com.quanyan.stadium.entity.vo.PKResultVo;

import java.util.List;

/**
 * Created by lei.w on 16/6/23.
 */
public interface BizPKEventDao {

    /**
     * 创建pk
     *
     * @param reqPKEvent
     */
    Integer createPKEvent(PKEventVo reqPKEvent);

    /**
     * 查询用户PK列表
     *
     * @param uid
     * @param status
     * @return
     */
    List<TbPKEvent> queryUserPKList(Integer uid, Integer status);

    /**
     * 查询用户创建并且没有结束PK列表
     *
     * @param uid
     * @param status
     * @return
     */
    List<TbPKEvent> queryUserCreatePKList(Integer uid, Integer status, Integer type);

    /**
     * 查询俱乐部创建并且没有结束PK列表
     * @param cludId
     * @param status
     * @param type
     * @return
     */
    List<TbPKEvent> queryCludCreatePKList(Integer cludId, Integer status, Integer type);

    /**
     * 查询用户接收并且没有结束PK列表
     *
     * @param uid
     * @param status
     * @return
     */
    List<TbPKEvent> queryUserReceivePKList(Integer uid, Integer status, Integer type);

    /**
     * 查询俱乐部接收并且没有结束PK列表
     * @param cludId
     * @param status
     * @param type
     * @return
     */
    List<TbPKEvent> queryCludReceivePKList(Integer cludId, Integer status, Integer type);

    /**
     * 查询用户最新创建的Pk
     * @param uid
     * @return
     */
    TbPKEvent queryUserNewestCreatePK(Integer uid,Integer categoryId);

    /**
     * 获取PK信息根据id
     *
     * @param id
     * @return
     */
    TbPKEvent getPKInfoById(Integer id);

    /**
     * 修改Pk状态
     *
     * @param id
     * @return
     */
    Integer updatePKStatusById(Integer id, Integer status);

    /**
     * 修改Pk状态及开始时间
     *
     * @param id
     * @param status
     * @param beginTime
     * @return
     */
    Integer updatePKStatusById(Integer id, Integer status, Long beginTime);

    /**
     * 录入PK结果
     *
     * @param pkResultVo
     */
    void entryPKResult(PKResultVo pkResultVo);

    /**
     * 查询PK结果
     *
     * @param pkid
     * @return
     */
    List<PKResultVo> queryPkResultByPkid(Integer pkid);

    /**
     * 查询用户的PK结果
     *
     * @param uid
     * @param pkid
     * @return
     */
    PKResultVo queryPkResultByUidAndPkid(Integer uid, Integer pkid);

    /**
     * 修改PK信息
     * @param pkEventVo
     */
    void updatePKEvent(PKEventVo pkEventVo);
}
